SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCedure [dbo].[SP_TCCOMP_RETE_I02]  
/*-------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                --*/  
/*---Cliente              : ACE                 --*/  
/*---Sistema              : Presupuesto                --*/  
/*---M©dulo               : Empresa                    --*/  
/*---Programa             : Grabaci©n Cabecera         --*/  
/*---                       Comprobante de Retenci½n--*/  
/*---Script               : tcmovi_c.sql               --*/  
/*---Nombre SP            : SP_TCCOMP_RETE_I02         --*/  
/*---Desarrollado por     : Reynaldo Menacho           --*/  
/*---Fecha Creaci©n       : 18/06/2003                 --*/  
/*---Base Datos           : Microsoft Sql Server       --*/  
/*---Versi©n              : 7.0                        --*/  
/*---Invoca a SP          :                            --*/  
/*-------------------------------------------------------*/  
  
/*-------------------------------------------------------*/  
/*---Modificado 1 por     : Maribel Julca Rodriguez      --*/  
/*---Fecha Modificaci©n   : 20/04/2005                   --*/   
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA Y CO_USUA_MODI                           --*/  
/*-------------------------------------------------------*/

/*-------------------------------------------------------*/  
/*---Modificado 1 por     : A.V.A      --*/  
/*---Fecha Modificaci©n   : 10/10/2009                   --*/   
/*---Detalle Modificaci©n : Modificacion de estado de documento (de ACT a PAG)							 --*/  
/*---en la insercion en la TMDOCU_PROV					--*/                       
/*-------------------------------------------------------*/    
  
/*-------------------------------------------------------*/  
/*---Comentarios                                       --*/  
/*---                                                  --*/  
/*---                                                  --*/  
/*-------------------------------------------------------*/  
  
/*-------------------------------------------------------*/  
/*---Drop Proc SP_TCCOMP_RETE_I02                      --*/  
/*---Grant all on SP_TCCOMP_RETE_I02 to public         --*/   
/*--- SP_TCCOMP_RETE_I02 '01', 'OFISIS', '020-00000002', '2003/06/18', '20100412366', 'SAVAR', '10632448756',   
      'CRE', '191-0860848-1-42', NULL, '2003', '06', '00400012', '0000186632541'        --*/  
/*-------------------------------------------------------*/  
  
 @ISCO_EMPR TD_VC_002,   
 @ISCO_USUA_MODI TD_VC_008_USUA,  
 @ISNU_COMP_RETE TD_VC_020,   
 @IDFE_COMP_RETE TD_DT_001,  
 @ISCO_PROV TD_VC_020,  
 @ISNO_PROV TD_VC_100,  
 @ISNU_RUCC TD_VC_020,  
 @ISCO_BANC TD_VC_003,  
 @ISNU_CNTA_BANC TD_VC_020,  
 @ISCO_CAJA TD_VC_020,  
 @ISAA_BACA TD_VC_004,   
 @ISMM_BACA TD_VC_002,   
 @ISNU_COMP_BACA TD_VC_008,   
 @ISNU_DOCU TD_VC_020,  
 @ISTI_SITU TD_VC_003
	As
Declare  
   @VNCO_NUEV_NUME TD_IN_001,   
   @VNNU_CORR_DOCU TD_IN_001,   
   @VSNU_COMP_NUEV TD_VC_020,  
   @VSCO_MONE TD_VC_003,  
   @VNFA_TIPO_CAMB TD_NU_009_004,  
   @VNNU_LONG TD_IN_001,  
   @VNNU_LONG_SERI TD_IN_001,  
   @OSTI_DOCU_CRET TD_VC_003  
  
 BEGIN TRAN SP_TCCOMP_RETE_I02  
  
  
	EXEC SP_TTDOCU_CNTB_Q02 21, @OSTI_DOCU_CRET OUTPUT  
	
	SELECT @VNNU_LONG = NU_LONG, @VNNU_LONG_SERI = NU_LONG_SERI  
	FROM TTDOCU_CNTB  
	WHERE TI_DOCU = @OSTI_DOCU_CRET  
	
	
	/** inserta en la cabecera de caja **/  
	
	If RTRIM(ISNULL(@ISCO_BANC, '')) != ''  
		Select @VNFA_TIPO_CAMB = T1.FA_TIPO_CAMB, @VSCO_MONE = T2.CO_MONE  
		From TCMOVI_BANC T1, TMCNTA_BANC T2  
		Where T1.CO_EMPR = @ISCO_EMPR  
		And T1.CO_BANC = @ISCO_BANC  
		And T1.NU_CNTA_BANC = @ISNU_CNTA_BANC  
		And T1.AA_BNCO = @ISAA_BACA  
		And T1.MM_BNCO = @ISMM_BACA  
		And T1.TI_MOVI_BANC = 'E'  
		And T1.NU_COMP_BANC = @ISNU_COMP_BACA  
		And T1.CO_EMPR = T2.CO_EMPR  
		And T1.CO_BANC = T2.CO_BANC  
		And T1.NU_CNTA_BANC = T2.NU_CNTA_BANC  
	
	If RTRIM(ISNULL(@ISCO_CAJA, '')) != ''  
		Select @VNFA_TIPO_CAMB = T1.FA_TIPO_CAMB, @VSCO_MONE = T2.CO_MONE  
		From TCMOVI_CAJA T1, TMCAJA T2  
		Where T1.CO_EMPR = @ISCO_EMPR  
		And T1.CO_CAJA = @ISCO_CAJA  
		And T1.AA_CAJA = @ISAA_BACA  
		And T1.MM_CAJA = @ISMM_BACA  
		And T1.TI_MOVI = 'E'  
		And T1.NU_COMP_CAJA = @ISNU_COMP_BACA  
		And T1.CO_EMPR = T2.CO_EMPR  
		And T1.CO_CAJA = T2.CO_CAJA  
	
	
	/* ---- Para comparar si es el œltimo comprobante emitido o si es uno anterior */  
	Select @VNNU_CORR_DOCU = Convert(Integer, Right(@ISNU_COMP_RETE, @VNNU_LONG))  
	
	Select  @VNCO_NUEV_NUME = T1.NU_ULTI_CORR + 1  
	From TTDOSE_CORR T1, TTDOCU_CNTB T2  
	Where T1.CO_EMPR = @ISCO_EMPR   
	And   T1.TI_DOCU = @OSTI_DOCU_CRET  
	And   T1.NU_SERI = LEFT(@ISNU_COMP_RETE, @VNNU_LONG_SERI)  
	And   T1.TI_DOCU = T2.TI_DOCU  
	
	
	Select @VSNU_COMP_NUEV = CONVERT(VARCHAR(8), @VNCO_NUEV_NUME)  
	
	Select @VSNU_COMP_NUEV = LEFT(@ISNU_COMP_RETE, @VNNU_LONG_SERI) + '-' + REPLICATE('0', @VNNU_LONG - 
LEN(@VSNU_COMP_NUEV)) +   
	@VSNU_COMP_NUEV  
	
	If @VNNU_CORR_DOCU = @VNCO_NUEV_NUME --Si es el œltimo comprobante emitido  
		Select @ISNU_COMP_RETE = @VSNU_COMP_NUEV   
	
	Insert Into TCCOMP_RETE(  
	CO_EMPR, NU_COMP_RETE, FE_COMP_RETE, CO_MONE, CO_PROV, NO_PROV, NU_RUCC, FA_TIPO_CAMB,CO_BANC,  
	NU_CNTA_BANC, CO_CAJA, AA_BACA, MM_BACA, NU_COMP_BACA, NU_DOCU, TI_SITU, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, 
FE_USUA_MODI)      
	Values (  
	@ISCO_EMPR, @ISNU_COMP_RETE, @IDFE_COMP_RETE, @VSCO_MONE, @ISCO_PROV, @ISNO_PROV, @ISNU_RUCC, @VNFA_TIPO_CAMB, 
@ISCO_BANC,  
	@ISNU_CNTA_BANC, @ISCO_CAJA, @ISAA_BACA, @ISMM_BACA, @ISNU_COMP_BACA, @ISNU_DOCU, @ISTI_SITU, @ISCO_USUA_MODI, 
GETDATE(), @ISCO_USUA_MODI, GETDATE())        
	
	If @@error <> 0  
	Begin  
		Rollback tran  
		Return  
	End  
	
	/** actualiza los saldos en la tabla de meses  **/  
	If @VNNU_CORR_DOCU = @VNCO_NUEV_NUME  
	Begin  
		UPDATE TTDOSE_CORR  
		SET NU_ULTI_CORR = T1.NU_ULTI_CORR + 1,  
		CO_USUA_MODI = @ISCO_USUA_MODI,   
		FE_USUA_MODI = GETDATE()  
		From TTDOSE_CORR T1, TTDOCU_CNTB T2  
		Where T1.CO_EMPR = @ISCO_EMPR   
		And   T1.TI_DOCU = @OSTI_DOCU_CRET  
		And   T1.NU_SERI = LEFT(@ISNU_COMP_RETE, T2.NU_LONG_SERI)  
		And   T1.TI_DOCU = T2.TI_DOCU  
	
		If @@error <> 0  
		Begin  
			rollback tran  
			return  
		End    
	End  
	
	INSERT INTO   
		TMDOCU_PROV(CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV,   
		CO_TIPO_OPER, CO_COND_PAGO, CO_UNID_CONC, FE_VENC,   
		FE_EMIS, FE_PROG_PAGO, FE_REGI_COMP, FA_TIPO_CAMB, CO_MONE,   
		IM_BRUT_AFEC, IM_BRUT_INAF, IM_GAFI, IM_MORA, IM_FLET,   
		ST_AFEC_GAFI, ST_AFEC_MORA, ST_AFEC_FLET, ST_DCT1_BRAF, ST_DCT1_BRIN,   
		ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET, ST_DCT2_BRAF, ST_DCT2_BRIN,   
		ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET, PC_DCT1, IM_DCT1,   
		PC_DCT2, IM_DCT2, PC_IMP1, IM_IMP1,   
		PC_IMP2, IM_IMP2, PC_IMP3, IM_IMP3, IM_TOTA,   
		IM_PAGA, CO_ESTA_DOCU, ST_CONT, TI_PROV, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)  
	VALUES (@ISCO_EMPR, @ISCO_PROV, @OSTI_DOCU_CRET, @ISNU_COMP_RETE,   
		'998', 'CON', '001', @IDFE_COMP_RETE,   
		@IDFE_COMP_RETE, @IDFE_COMP_RETE, @IDFE_COMP_RETE, @VNFA_TIPO_CAMB, 'SOL',   
		0, 0, 0, 0, 0,   
		'N', 'N', 'N', 'N', 'N',   
		'N', 'N', 'N', 'N', 'N',   
		'N', 'N', 'N', 0, 0,  
		0, 0, 0, 0,   
		0, 0, 0, 0, 0,   
		0, 'PAG', 'N', NULL, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())  
	
	If @@error <> 0  
	Begin  
		Rollback tran  
		Return  
	End  
	
	
	Commit Tran  
  
SELECT @ISNU_COMP_RETE  
RETURN  
  
/*------------------------ Fin ------------------------------*/



GO
